#pragma once

#include "hugin"
#include <hash_map>
#include "PPR.h"
#include "..\HuginApiAddons\HuginApiAddons.h"

using namespace std;
using namespace stdext;
using namespace HAPI;
using namespace ApiAddons;

class InputPprIdid
{
public:
	__declspec(dllexport) InputPprIdid(void);

	__declspec(dllexport) Domain * InputPprIdid::InputPprIntoIdidModels(Domain * inputID, hash_map<string, PPR> pprs, string jActionPrefix);
	
	__declspec(dllexport) Domain * InputPprIdid::EnterPprModelsIntoIdid(Domain * inputIDID, hash_map<string, PPR> pprs, string modelPrefix, string jActionPrefix, int NumModels, bool randomUnknown);

private:
	Domain * InputPprIdid::SetModelNodesStates(Domain * inputID, string ModelPrefix, int numModels);
	void InputPprIdid::ApplyPprToNode(DiscreteNode * node, hash_map<string, PPR> pprs);
	list<string> InputPprIdid::GetActionsForCombinationAndPpr(list<int> combination, PPR model, DiscreteNode * node, bool random);
};

